/*
 * ParametroInicializacion.java
 *
 * Copyright 2011 Universidad Francisco de Paula Santander (UFPS).
 * Todos los Derechos Reservados.
 * Creado el 24/04/2011, 01:00:01 AM
 */

package com.ufps.cuatro.modelo.representacion;

import com.ufps.cuatro.util.base.ObjectBase;

/**
 * <i><b>ParametroInicializacion:</b></i> Representa un Parametro (Tipo de Dato)
 * en la Inicialización de Propiedades de Componentes.
 * 
 * @author Carlos A. Torres C. - Dolly E. Guerrero. <https://code.google.com/p/tesis4dor/>
 * @see ObjectBase
 */
public class ParametroInicializacion extends ObjectBase{
    private static final long serialVersionUID = -534433907257312465L;
    
    private Inicializacion objParent;
    private String strValue;
    private Object objValue;
    private String strFormat;

    /**
     * Constructor por defecto de la clase 
     */
    public ParametroInicializacion() {
    }

    /**
     * Constructor con inicialización de la Propiedades Básicas.
     * @param id Propiedad utilizada para identificar el indice dentro de los archivos de
     * propiedades.
     * @param strValue Valor de Parametro representado en un Tipo de Dato <code>String</code>.
     * @param strFormat  
     */
    public ParametroInicializacion(int id, String strValue, String strFormat) {
        super(id);
        this.strValue = strValue;
        this.objValue = strValue;
        this.strFormat = strFormat;
    }
    
    /**
     * Constructor con inicialización de la Propiedades Básicas y referencia al Objeto padre
     * Contenedor.
     * @param objParent Objeto Padre Contenedor.
     * @param id Propiedad utilizada para identificar el indice dentro de los archivos de
     * propiedades.
     * @param strValue Valor de Parametro representado en un Tipo de Dato <code>String</code>.
     * @param strFormat  
     */
    public ParametroInicializacion(Inicializacion objParent, int id, String strValue, String strFormat) {
        super(id);
        this.objParent = objParent;
        this.strValue = strValue;
        this.objValue = strValue;
        this.strFormat = strFormat;
    }

    /**
     * Devuelve el Objeto Padre Contenedor.
     * @return Objeto Padre Contenedor.
     */
    public Inicializacion getObjParent() {
        return objParent;
    }

    /**
     * Establece el Objeto Padre Contenedor.
     * @param objParent Objeto Padre Contenedor.
     */
    public void setObjParent(Inicializacion objParent) {
        this.objParent = objParent;
    }

    /**
     * Devuelve el Objeto que representa el Valor del Parametro.
     * @return Objeto que representa el Valor del Parametro.
     */
    public Object getObjValue() {
        return objValue;
    }

    /**
     * Establece el Objeto que representa el Valor del Parametro.
     * @param objValue Objeto que representa el Valor del Parametro.
     */
    public void setObjValue(Object objValue) {
        this.objValue = objValue;
    }

    /**
     * Devuelve el Valor de Parametro representado en un Tipo de Dato <code>String</code>.
     * @return Valor de Parametro representado en un Tipo de Dato <code>String</code>.
     */
    public String getStrValue() {
        return strValue;
    }

    /**
     * Establece el Valor de Parametro representado en un Tipo de Dato <code>String</code>.
     * @param strValue Valor de Parametro representado en un Tipo de Dato <code>String</code>.
     */
    public void setStrValue(String strValue) {
        this.strValue = strValue;
    }

    /**
     * 
     * @return
     */
    public String getStrFormat() {
        return strFormat;
    }

    /**
     * 
     * @param strFormat
     */
    public void setStrFormat(String strFormat) {
        this.strFormat = strFormat;
    }
    
    @Override
    public String toString() {                
        return this.strValue;
    }
    
    @Override
    public int compareTo(Object o) {        
       try{
            ParametroInicializacion obj = (ParametroInicializacion) o;
            if(this.id > obj.id) {
                return 1;
            }
            else if(this.id < obj.id) {
                return -1;
            }
            else {
                return 0;
            }
        }catch(java.lang.NullPointerException ex){}
        return 0;
    }

//    @Override
//    protected Object clone() {
//        return super.clone();
//    }
    
    
}
